Location-based search results

ABSTRACT

A device implementing a system for providing location based search results includes at least one processor configured to detect that a location of a device is within a location of a store or within a threshold distance of the location, and establish a connection with a wireless network of the store. The at least one processor is configured to access an intranet associated with the store, the intranet being accessed via a network identifier previously stored on the device in association with the store, and receive user input for a search. The at least one processor is configured to obtain, via the intranet, at least one of a query completion suggestion or search result having been targeted to the location of the store or the threshold distance of the location, and display the at least one of the query completion suggestion or the search result in association with the search.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a divisional of U.S. patent application Ser.No. 15/851,660, entitled “LOCATION-BASED SEARCH RESULTS,” filed Dec. 21,2017, which claims the benefit of U.S. Provisional Patent ApplicationSer. No. 62/574,702, entitled “LOCATION-BASED SEARCH RESULTS,” filedOct. 19, 2017, each of which is hereby incorporated herein by referencein its entirety and made part of the present U.S. Utility PatentApplication for all purposes.

TECHNICAL FIELD

The present description generally relates to providing query completionsuggestions and/or search results, including providing query completionsuggestions and/or search results based on device location.

BACKGROUND

Electronic devices such as laptops, mobile phones, computers and mobilemedia devices can run applications for performing searches. A user caninput a search term within such an application on the electronic device,and the application can perform a local search on the electronic devicefor the search term and/or request a server to perform a search on thesearch term. The application may then provide one or more search resultsthat are retrieved based on the search term.

BRIEF DESCRIPTION OF THE DRAWINGS

Certain features of the subject technology are set forth in the appendedclaims. However, for purpose of explanation, several embodiments of thesubject technology are set forth in the following figures.

FIG. 1 illustrates an example environment in which an electronic devicemay implement the subject system in accordance with one or moreimplementations.

FIG. 2 illustrates an example network environment for performing asearch based on device location in accordance with one or moreimplementations.

FIG. 3 illustrates an example electronic device that may implement thesubject system in accordance with one or more implementations.

FIG. 4 illustrates a flow diagram of an example process for performing asearch based on device location in accordance with one or moreimplementations.

FIG. 5 illustrates a flow diagram of another example process forperforming a search based on device location in accordance with one ormore implementations.

FIG. 6 illustrates a flow diagram of another example process forperforming a search based on device location in accordance with one ormore implementations.

FIG. 7 illustrates a flow diagram of another example process forperforming a search based on device location in accordance with one ormore implementations.

FIG. 8 illustrates an example electronic system with which aspects ofthe subject technology may be implemented in accordance with one or moreimplementations.

DETAILED DESCRIPTION

The detailed description set forth below is intended as a description ofvarious configurations of the subject technology and is not intended torepresent the only configurations in which the subject technology can bepracticed. The appended drawings are incorporated herein and constitutea part of the detailed description. The detailed description includesspecific details for the purpose of providing a thorough understandingof the subject technology. However, the subject technology is notlimited to the specific details set forth herein and can be practicedusing one or more other implementations. In one or more implementations,structures and components are shown in block diagram form in order toavoid obscuring the concepts of the subject technology.

The subject system provides query completion suggestions and/or searchresults to a device of a user based on a location of the device. Forexample, when a user is within a store or within a threshold distance ofthe store, search results and/or query completion suggestions specificto that store may be of particular interest to the user. However, inorder to ensure user/device privacy and anonymity, it may not bedesirable to transmit identifying information, such as the location ofthe device, to a remote server (e.g., a third party and/or untrustedserver), or storing such information on a remote server.

In the subject system, when a user initiates a search on a device, suchas by inputting at least a partial query, the device may determine thatits location is within a store location or within a threshold distanceof the store location. Based on the determination that the device islocated within the store location, or within the threshold distance ofthe store location, the device may provide the user with querycompletion suggestion(s) and/or search results targeted to the storelocation without transmitting device identifying information, useridentifying information, and/or the query information to a remoteserver. Rather, the query completion suggestion(s) and/or search resultsmay be obtained based on one or more of: information received via anintranet of the store, keywords, search terms, and/or search resultsthat are targeted to, and/or associated with the store, and arepre-stored locally on the device, store information provided by atrusted intermediary server, and/or store information provided bypre-authorized remote servers.

Thus, the subject system allows a user to receive query completionsuggestions and/or search results relevant to (and/or targeted to) theirparticular location, such as within a store, without requiring the userto provide user identifying information and/or device identifyinginformation to a remote server, such as a third party server. In thismanner, the subject system preserves the privacy of the user while stillproviding the user with information relevant to their location.

FIG. 1 illustrates an example environment 100 in which an electronicdevice may implement the subject system in accordance with one or moreimplementations. Not all of the depicted components may be used in allimplementations, however, and one or more implementations may includeadditional or different components than those shown in the figure.Variations in the arrangement and type of the components may be madewithout departing from the spirit or scope of the claims as set forthherein. Additional components, different components, or fewer componentsmay be provided.

The environment 100 includes an electronic device 102, a store 104, andwireless access points 106 a-106 b (e.g., Wi-Fi access points, cellularaccess points, and the like). For explanatory purposes, the environment100 is illustrated in FIG. 1 as including a single electronic device102, a single store 104, and two wireless access points 106 a-106 b;however, the environment 100 may include any number of electronicdevices, any number of stores, and any number of wireless access points.

The environment 100 allows for the electronic device 102 to determineits location based on one or more positioning technologies. Examples ofsuch positioning technologies include, but are not limited to, GlobalNavigation Satellite System (GNSS), wireless access point technology(e.g., based on time of arrival, angle of arrival, and/or signalstrength of signals received from wireless access points at knownlocations such as 106 a-106 b), cellular phone signal positioning,Bluetooth signal positioning and/or image recognition positioning.Moreover, the electronic device 102 may implement an inertial navigationsystem (INS) which uses device sensor(s) (e.g., motion sensors such asaccelerometers, gyroscope) to calculate device state (e.g., position,orientation and velocity) for supplementing location data provided bythe above-mentioned positioning technologies.

The environment 100 may facilitate providing search results and/or querycompletion suggestions to the electronic device 102, based on adetermination that the location of the electronic device 102 is withinthe store 104 or within a threshold distance of the store 104. Examplesof the store 104 include, but are not limited to, a retail store, adine-in restaurant, a drive-through restaurant, a showroom, a kiosk, agas station, a museum, an amusement park, a public park, a touristlandmark, an indoor shopping mall, an outdoor shopping mall, a sportsvenue, a music venue, or any identifiable location, such as any locationthat can be geo-fenced.

In the example of FIG. 1, the user of the electronic device 102 istraveling by foot and is located within the store 104. However, the usermay be traveling, for example, by a vehicle (e.g., an automobile, amotorcycle, a bicycle) that is located within a threshold distance ofthe store 104. For example, if the store 104 is a drive-throughrestaurant, the user may be traveling by automobile in the drive-throughlane, which is at a predetermined position and distance with respect tothe physical restaurant.

In addition to contributing to the position solution of the electronicdevice 102, the wireless access points 106 a-106 b may also be used toconnect the electronic device 102 to a network, such as a local areanetwork, a private network (e.g., an intranet), and/or a public network(e.g., the Internet). For example, one or more of the wireless accesspoints 106 a-106 b may connect the electronic device 102 to an intranetassociated with the store 104, as discussed further below with respectto FIG. 2. Alternatively or in addition, one or more of the wirelessaccess points 106 a-106 b may connect the electronic device 102 to theInternet.

FIG. 2 illustrates an example network environment 200 for performing asearch based on device location in accordance with one or moreimplementations. Not all of the depicted components may be used in allimplementations, however, and one or more implementations may includeadditional or different components than those shown in the figure.Variations in the arrangement and type of the components may be madewithout departing from the spirit or scope of the claims as set forthherein. Additional components, different components, or fewer componentsmay be provided.

The network environment 200 includes the electronic device 102, a firstnetwork 202, a second network 204, an intermediary server 206, a localserver 208, and one or more remote servers 210 a-210 n. In one or moreimplementations, the first network 202 may communicatively (directly orindirectly) couple, for example, any two or more of the electronicdevice 102, the intermediary server 206, the remote servers 210 a-210 n,and the local server 208. The first network 202 may be an interconnectednetwork of devices that may include, or may be communicatively coupledto, the Internet.

In one or more implementations, the second network 204 maycommunicatively (directly or indirectly) couple, for example, theelectronic device 102 and the local server 208. In one or moreimplementations, the second network 204 may be an intranet whichcorresponds to a private network associated with a store (e.g., thestore 104). The electronic device 102 may obtain access to this intranetvia one of the wireless access points 106 a-106 b.

For explanatory purposes, the network environment 200 is illustrated inFIG. 2 as including the electronic device 102, the intermediary server206, the remote servers 210 a-210 n, the local server 208, and the firstand second networks 202 and 204; however, the network environment 200may include any number of electronic devices, any number of servers, andany number of networks. In one or more implementations, the local server208 may be located within a location of an associated store or may belocated remotely from an associated store (but accessible via anintranet of the associated store).

The electronic device 102 may be, for example, a portable computingdevice such as a laptop computer, a smartphone, a peripheral device(e.g., a digital camera, headphones), a tablet device, a wearable devicesuch as a watch, a band, and the like, or any other appropriate devicethat includes, for example, one or more wireless interfaces, such asWLAN radios, cellular radios, Bluetooth radios, Zigbee radios, nearfield communication (NFC) radios, and/or other wireless radios. In FIGS.1-2, by way of example, the electronic device 102 is depicted as asmartphone. The electronic device 102 may be, and/or may include all orpart of, the electronic device discussed below with respect to FIG. 3,and/or the electronic system discussed below with respect to FIG. 8.

One or more of the intermediary server 206, the remote servers 210 a-210n, and/or the local server 208 may be, and/or may include all or part ofthe electronic system discussed below with respect to FIG. 8. One ormore of the intermediary server 206, the remote servers 210 a-210 n,and/or the local server 208 may include one or more servers, such as acloud of servers, that may be used in a system for performing a searchbased on device location.

For example, the electronic device 102 may detect that its location iswithin, or within a threshold distance of, the store 104. The electronicdevice 102 may further receive user input to initiate a search, e.g.,the user may input a partial query. In response, the electronic device102 may obtain query completion suggestion(s) and/or search result(s)that are targeted to and/or associated with the location of the store104. These query completion suggestion(s) and/or search result(s) may beobtained from one or more of: the local server 208 (e.g., as discussedbelow with respect to FIG. 4), locally on the electronic device 102(e.g., as discussed below with respect to FIG. 5), the intermediaryserver 206 (e.g., as discussed below with respect to FIG. 6), and/orpre-authorized remote server(s), for example, one or more of remoteservers 210 a-210 n pre-authorized by the user (e.g., as discussed belowwith respect to FIG. 7). Thus, the subject system allows the user toreceive query completion suggestions and/or search results associatedwith, and/or targeted to, the location of the store 104 withoutrequiring the user to provide identifying information, such as thelocation of the device, to third party and/or unauthorized servers.

FIG. 3 illustrates an example electronic device 102 that may implementthe subject system in accordance with one or more implementations. Forexample, the electronic device 102 can correspond to the electronicdevice from FIGS. 1-2. Not all of the depicted components may be used inall implementations, however, and one or more implementations mayinclude additional or different components than those shown in thefigure. Variations in the arrangement and type of the components may bemade without departing from the spirit or scope of the claims as setforth herein. Additional components, different components, or fewercomponents may be provided.

The electronic device 102 may include a host processor 302, a memory304, a communication interface 306 and the positioning circuitry 308.The host processor 302 may include suitable logic, circuitry, and/orcode that enable processing data and/or controlling operations of theelectronic device 102. In this regard, the host processor 302 may beenabled to provide control signals to various other components of theelectronic device 102. The host processor 302 may also control transfersof data between various portions of the electronic device 102.Additionally, the host processor 302 may implement an operating systemor may otherwise execute code to manage operations of the electronicdevice 102.

The memory 304 may include suitable logic, circuitry, and/or code thatenable storage of various types of information such as received data,generated data, code, and/or configuration information. The memory 304may include, for example, random access memory (RAM), read-only memory(ROM), flash, and/or magnetic storage. In one or more implementations,the memory 304 may store code corresponding to one or more applicationsor apps, hereinafter “store applications,” that are respectivelyassociated with one or more stores (e.g., the store 104). In one or moreimplementations, the store applications may provide information forobtaining query completion suggestion(s) and/or search result(s), suchas when the user is within a threshold distance of a physical storeassociated with a given application. The memory 304 may further storepredefined data that may be separate from and/or associated with thestore applications. For example such predefined data may be one or moreof store location data, network identifiers (e.g., uniform resourcelocators (“URLs”)), search keywords, and/or search content.

The positioning circuitry 308 may be used in determining the location ofthe electronic device 102 based on positioning technology. For example,the positioning circuitry 308 may provide for one or more of GNSSpositioning (e.g., via a GNSS receiver), wireless access pointpositioning (e.g., via a wireless network receiver), cellular phonesignal positioning, Bluetooth signal positioning (e.g., via a Bluetoothreceiver), image recognition positioning (e.g., via an image sensor),and or an INS (e.g., via motion sensors such as an accelerometer and/orgyroscope).

The communication interface 306 may include suitable logic, circuitry,and/or code that enables wired or wireless communication, such asbetween any of the electronic device 102, the intermediary server 206,the remote servers 210 a-210 n and/or the local server 208, over thefirst network 202 and/or the second network 204. The communicationinterface 306 may include, for example, one or more of a Bluetoothcommunication interface, an NFC interface, a Zigbee communicationinterface, a WLAN communication interface, a USB communicationinterface, or generally any communication interface. The communicationinterface 306 may be used to transmit information to the intermediaryserver 206, the remote servers 210 a-210 n, and/or the local server 208,and to receive information corresponding to query completionsuggestion(s) and/or search result(s) from the intermediary server 206,the remote servers 210 a-210 n, and the local server 208.

In one or more implementations, one or more of the host processor 302,the memory 304, the communication interface 306, the positioningcircuitry 308, and/or one or more portions thereof, may be implementedin software (e.g., subroutines and code), may be implemented in hardware(e.g., an Application Specific Integrated Circuit (ASIC), a FieldProgrammable Gate Array (FPGA), a Programmable Logic Device (PLD), acontroller, a state machine, gated logic, discrete hardware components,or any other suitable devices) and/or a combination of both.

FIG. 4 illustrates a flow diagram of an example process for performing asearch based on device location in accordance with one or moreimplementations. For explanatory purposes, the process 400 is primarilydescribed herein with reference to the electronic device 102 of FIGS.1-3. However, the process 400 is not limited to the electronic device102, and one or more blocks (or operations) of the process 400 may beperformed by one or more other components of the electronic device 102.Further for explanatory purposes, the blocks of the process 400 aredescribed herein as occurring in serial, or linearly. However, multipleblocks of the process 400 may occur in parallel. In addition, the blocksof the process 400 need not be performed in the order shown and/or oneor more blocks of the process 400 need not be performed and/or can bereplaced by other operations.

In one or more implementations, the electronic device 102 may haveinstalled one or more store applications respectively corresponding toone or more stores (e.g., a chain of retail stores). For example, theelectronic device 102 may install a store application “Store A App”corresponding to retail store chain A (e.g., one or more stores), and/ormay further install a store application “Store B App” corresponding to adifferent (e.g., competing) retail store chain B (e.g., one or morestores).

At the time of installing a particular store application and/or any timethereafter, the store application may provide a set of networkidentifiers (e.g., URLs) to the electronic device 102 for storing in thememory 304. The set of network identifiers may include one or morenetwork identifiers corresponding to a local server 208 associated withthe particular store (and/or store chain) which can be accessed via anintranet (e.g., the second network 204) associated with the particularstore (and/or store chain). In one or more implementations, each networkidentifier within the set of network identifiers may correspond to adifferent individual store location of a particular retail chain. Forexample, Store A App may provide the electronic device 102 with a set ofnetwork identifiers, each respectively corresponding to a differentindividual store location for retail store chain A. Thus, in FIG. 4, theelectronic device 102 receives a network identifier (e.g., URL)corresponding to an intranet associated with a store (402), and theelectronic device 102 stores the network identifier in association withthe store (404).

Each network identifier may be used to retrieve data (e.g., productavailability, inventory, promotions and/or coupons) specific to itsrespective individual store location. For example, store A in SanFrancisco store may have different product availability, inventory,promotions and/or coupons than store A in New York, and the localservers (e.g., the local server 208) at each of the San Francisco andNew York would have respective network identifiers (e.g., URLs) foraccessing data specific to that store location. As is discussed furtherbelow, the retrieved data may be used to provide query completionsuggestions and/or search results specific to an individual storelocation.

In one or more implementations, the electronic device 102 stores thenetwork identifier(s) in association with its system-wide searchfunctionality. For example, the system-wide search may be implemented bythe operating system of the electronic device 102. The system-widesearch may correspond to a search system which searches a local index ofall items and files on the electronic device 102. The system-wide searchmay allow the user to search for and locate a wide variety of items onthe electronic device 102 (e.g., locally-stored items), includingdocuments, pictures, music, applications, and system preferences. Inaddition, specific words in locally stored documents, in webpages in aweb browser's history, in locally stored emails, and the like can besearched. Moreover, using the subject system, information obtained froman individual store's intranet may be used to provide search suggestions(e.g., search results and/or query completion suggestions) when the userinitiates a system-wide search within the store or within a thresholddistance of the store.

The electronic device 102 may detect that its location is within thestore or within the threshold distance of the store (406). In thisregard, individual store locations for retail store chain A or B may begeo-fenced, such that a virtual perimeter, or “geo-fence,” is definedfor individual store locations. Geo-fences may be defined, for example,by a set of coordinates that define a virtual perimeter around alocation. The set of coordinates may be provided, for example, by theapplication associated with the store.

The positioning circuitry 308 of the electronic device 102 may be usedin conjunction with the geo-fenced store locations to determine when theelectronic device 102 is located within the store or within thethreshold distance of the store (e.g., within 5 feet of the store, orwithin the drive-thru lane of a restaurant). The store application maydetermine (e.g. based on program/administrator settings) which of beingwithin the store or within the threshold distance should qualify as a“predesignated area” to trigger location-based searching (e.g., forsupplemental search suggestions). Moreover, in addition to the currentdevice position, the electronic device's direction of travel and/orvelocity may be determined by the positioning circuitry 308. Theelectronic device's direction and/or velocity may be used to determinethat the electronic device 102 is about to enter or exit thepredesignated area, and search suggestions (e.g., query completionsuggestions and/or search results) can be enabled or disabledaccordingly.

In response to detecting that the location of the electronic device 102is within the predesignated area, the electronic device 102 mayestablish a connection with a wireless network of the individual store(408). For example, the connection to the wireless network may be madevia one or more of wireless access points 106 a-106 b. In one or moreimplementations, the electronic device 102 may prompt the user toconfirm whether they would like to connect to the wireless network ofthe individual store. In one or more implementations, the electronicdevice 102 may determine that it is within the predesignated area when abeacon signal or other pre-association signal is received from awireless access point associated with the store. For example, the beaconsignal may include an identifier, such as a medium access control (MAC)address, that is pre-stored on the electronic device 102 as beingassociated with the store, such as when the application associated withthe store is installed.

Using the established connection, the electronic device 102 may accessthe intranet associated with the store (e.g., associated with the retailchain), based on the respective network identifier (e.g., URL) stored inthe memory 304 (410). Since the network identifier was previously storedin memory, it may not be necessary for the store application to berunning on the electronic device 102 in order for the electronic device102 to access the intranet for the store.

In one or more implementations, the electronic device 102 may prompt theuser to connect to the intranet associated with the store and/or toreceive additional data from the intranet associated with the store(412). If the user declines, the electronic device 102 would not connectto the intranet via the network identifier (e.g., URL). If the useraccepts (414), the electronic device 102 would connect to the intranetvia the network identifier (e.g., corresponding to the local server208), so that data specific to the individual store (e.g., San Franciscolocation of store A) can be accessed for supplemental search resultsand/or query completion suggestions. As discussed above, the localserver 208 is referred to as being “local” in the sense that the localserver 208 may only be accessible by the electronic device 102 via theintranet associated with the store. However, the local server 208 maynot be physically located locally, e.g., within the store.

In establishing a connection to the intranet, the electronic device 102may implement media access control (MAC) address randomization, so as tochange the factory-assigned MAC of the electronic device 102. In thismanner, the retail chain's local server (e.g., the local server 208)would not receive identifying information of the electronic device 102.Further, the MAC address may be randomized every time the electronicdevice 102 connects to an individual store's intranet, so that neitherthe individual store nor the retail store chain could link a currentidentifier to a previous identifier for the electronic device 102. Inthis manner, anonymity can be preserved when the user performs a search.

In a case where the store application is running on the electronicdevice 102 while the electronic device 102 is within the predesignatedarea of the store, the subject system may implement further measures tomaintain user privacy and anonymity. For example, the store application(e.g., Store A App) may have a user-selectable setting which permits thestore application to access device location. If the user does not permitdevice location access, the electronic device 102 may not provide thedevice location to Store A App. Thus, the local server 208 correspondingto San Francisco store A would be permitted to send data to theelectronic device 102; however, the location of the electronic device102 would be prevented from being sent to the local server 208 and/orthe remote server 210 a corresponding to retail store chain A.

The electronic device 102 may receive user input, such as at least apartial query, for initiating a search (416), for example, a system-widesearch. As noted above, the system-wide search may provide for surfacingdocuments, emails, in-app content, pictures, music, applications, systempreferences, specific words in documents and in webpages in a webbrowser's history, bookmarks, and the like. In the subject system, thesystem-wide search results may further include search suggestions (e.g.,search results and/or query completion suggestions) based on dataretrieved from the intranet corresponding to the individual store. Asnoted above, this data may include product availability, inventory,promotions and/or coupons specific to that store.

The electronic device 102 sends an indication of the user input to thelocal server 208 via the intranet (418). The electronic device 102obtains, via the intranet and in response to the sent indication, atleast one of a query completion suggestion or a search result based onthe intranet data (420). In one or more implementations, the electronicdevice 102 may not provide an indication of the user input to the localserver 208 and instead may utilize the data associated with the storethat was retrieved via the intranet to provide query completionsuggestion(s) and/or search result(s), e.g., without providing the userinput to the local server 208.

The query completion suggestion(s) and/or search result(s) obtained fromthe intranet may adjust based on the indication of the user input sentto the local server 208. For example, the user may initially perform agesture to open up the system-wide search interface (e.g., a swipegesture on the touchscreen of the electronic device 102). At that time,the query completion suggestion(s) and/or search result(s) provided viathe intranet may correspond to search suggestions that are predefined(e.g., “items on sale,” “special deals,” “today's coupons”). If the userbegins to type within a search field, the search suggestions may bedynamically updated based on the current input within the search field.Thus, as the user continues to type a term, different query completionsuggestions and/or search results may be obtained, such as from theintranet.

In addition to text-based input, the user may enter search queries viathe electronic device 102 based on one or more of: voice input, barcodeor quick response (QR) code scanning, object image recognition, and thelike. Again, query completion suggestions and/or search results may bedynamically updated accordingly.

In one or more implementations, the intranet data provided via thenetwork identifier (e.g. URL) may not be provided in response to theuser initiating the search. Rather, the intranet data specific to anindividual store may be provided, it its entirety, at or within athreshold time after the electronic device 102 connects to the intranet.The electronic device 102 may store this data (e.g., in cache) and thestorage of such data may be temporary (e.g., based on time-to-live valuepredefined by the store application). Thus, when the user initiates asearch within the store, the data specific to that store is alreadypre-fetched from the intranet and locally stored, so that theinformation can be obtained locally on the electronic device 102 withouthaving to again access the intranet and/or without having to provide thepartial query input by the user over the intranet.

The at least one of the query completion suggestion or the search resultmay be displayed in association with the search (422). In displaying thesearch results, the electronic device 102 may categorize the searchresults so that they are grouped according to the source from which theycame. For example, typical search queries/results of bookmarks may begrouped under a “web browser” heading, emails may be grouped under an“email” heading, and photos may be grouped under a “photos” heading.Moreover, search queries/results from individual store A's intranet maybe grouped under a “store A” heading. In one or more implementations,other display configurations can be used to categorize searchqueries/results.

In a case where the user selects one of the query completionsuggestion(s) and/or search result(s) as provided via the intranet, theuser may be directed to a page (e.g., an intranet webpage, an internetwebpage, or a page (or user interface) within the respective storeapplication) with more information for the selected item. For example,the webpage may be a profile page for the item, where the user can checkproduct availability, customer reviews, promotions, prices, and optionsfor purchasing the item. While the user may be provided access to aspecific page of the store, only the local server 208 may have been madeaware of the location of the electronic device 102 and/or the locationof the electronic device 102 may have been obfuscated from the localserver 208 (such as by MAC address randomization). In one or moreimplementations, the remote server 210 a (e.g., corresponding to retailstore chain A) is not provided with identifying information or queryinformation that assisted the user to that page.

In one or more implementations, user interaction with respect to an itemmay result in the associated store paying a commission for the userinteraction, such as to an entity associated with presenting the item tothe user. The user interaction may correspond to a desired, predefinedaction based on the item information presented to the user. Examples ofthe desired action may include physical actions by the user, includingbut not limited to, the user physically entering the store (e.g., asdetermined by device location), the user scanning a coupon (e.g.,displayed on the electronic device 102) at a store register, the userpurchasing the item at a store register using store credit, or the like.Alternatively, or in addition, examples of the desired action mayinclude user interaction with the electronic device 102, including butnot limited to, user selection of the query completion suggestion(s)and/or search result(s), online purchase of the item, online endorsementof the item, or the like. In one or more implementations, the commissionto be paid by the store may be based on a predefined agreement betweenthe store and a search service implementing the subject system.

FIG. 5 illustrates a flow diagram of another example process forperforming a search based on device location in accordance with one ormore implementations. For explanatory purposes, the process 500 isprimarily described herein with reference to the electronic device 102of FIGS. 1-3. However, the process 500 is not limited to the electronicdevice 102, and one or more blocks (or operations) of the process 500may be performed by one or more other components of the electronicdevice 102. Further for explanatory purposes, the blocks of the process500 are described herein as occurring in serial, or linearly. However,multiple blocks of the process 500 may occur in parallel. In addition,the blocks of the process 500 need not be performed in the order shownand/or one or more blocks of the process 500 need not be performedand/or can be replaced by other operations.

As noted above with reference to FIG. 4, one or more store applicationsmay be installed on the electronic device 102. For example, theelectronic device 102 may install Store A App corresponding to retailstore chain A, and/or Store B App corresponding to a competing retailstore chain B. For example, retail store chain A and retail store chainB may be competitors.

At the time of installing and/or any time thereafter, each storeapplication may provide a set of keywords associated with the respectivestore. For example, Store A App may provide the electronic device 102with a set of keywords, each keyword respectively corresponding topossible search results or query completion suggestions related toretail store chain A. Examples of keywords include, but are not limitedto, names of general categories of products or items (e.g., “shoes,”“food”), specific names of products or items (e.g., “XYZ shoes,” “ABCmeat”), and/or generic terms related to store (e.g., “store hours,”“what's new,” “sale,” “coupon”). Likewise, Store B App may provide theelectronic device 102 with a different set of keywords, each keywordrespectively corresponding to possible search results or querycompletion suggestions related to retail store chain B.

In one or more implementations, keywords may be associated withindividual stores rather than with retail store chains, so that keywordsare specific to an individual store. For example, at the time ofinstalling Store A App, a set of keywords may be provided in associationwith San Francisco store A, such as products carried at San Franciscostore A, and a different set of keywords may be provided in associationwith New York store A, such as products carried at New York store A.These sets keywords can be geo-fenced to their respective stores, sothat they become available within search once the electronic device 102is in the predesignated area for an individual store location.

Thus, in FIG. 5, the electronic device 102 receives information (e.g., aset of keywords) associated with a store (502), and the electronicdevice 102 stores this information (e.g., the set of keywords) inassociation with the store and/or in association with the physicallocation of the store (e.g., a set of coordinates) (504). In one or moreimplementations, the electronic device 102 associates this pre-storedinformation (e.g., the set of keywords) with its system-wide searchfunctionality.

The electronic device 102 may detect that its location is within alocation of the store or within a threshold distance of the location ofthe store (506). As discussed above with respect to FIG. 4, theelectronic device 102 may make this detection based on geo-fencing ofindividual stores and detecting device location via the positioningcircuitry 308.

The electronic device 102 may receive user input for initiating a search(508), for example, a system-wide search. Using the subject system,results for the system-wide search may be expanded to include searchsuggestions based on the keywords. As noted above, these keywords mayinclude names of general categories of products or items, specific namesof products or items, and/or generic terms related to store. Theelectronic device 102 may obtain, in response to the received userinput, at least one of a query completion suggestion or a search resultbased on the set of keywords (510). These query completion suggestion(s)and/or search result(s) may supplement other search suggestions (e.g.,as documents, pictures, music, applications, system preferences,specific words in documents and in webpages in a web browser's history,and/or bookmarks). In one or more implementations, the keyword-basedquery completion suggestion(s) and/or search result(s) may also beobtained in conjunction with the intranet-based suggestions describedabove with reference to FIG. 4.

As discussed above with reference to FIG. 4, the obtained querycompletion suggestion(s) and/or search result(s) may adaptively and/ordynamically adjust based on user input. Thus, search suggestions uponopening the system-wide search interface may be different than thedynamically-based search suggestions obtained as the user updateshis/her search input (e.g., by typing, barcode or QR code scanning,object recognition).

By virtue of obtaining a set of keywords and locally storing thekeywords a priori (e.g., when downloading the store application), it ispossible for the user to receive search suggestions based on thekeywords without having to connect to a network (e.g., an local intranetor the internet), and/or without having to open the store application.Rather, the system-wide search can simply fetch the keywords for thestore when the electronic device 102 is detected to be within thepredesignated area of the store. The device location need not beprovided to any of the local server 208, the intermediary server 206, orthe remote servers 210 a-210 n. In this manner, anonymity and userprivacy may be preserved.

In one or more implementations, it is possible for a retail store chain(e.g., retail store chain B) to geo-fence its provided set of keywordsto a competing retail store chain (e.g., retail store chain A). In thismanner, the electronic device 102 may obtain search suggestions forretail store chain B while he/she is actually in the predesignated areaof a store corresponding to retail chain store A. The predesignated area(e.g., within the store, within a threshold distance of the store) asdefined by App B Store may be the same as, or may be different from,that as defined by App A Store. By permitting stores to geo-fence tocompeting stores, it is possible for more competitive pricing, products,sales, and the like to be presented to a user while the electronicdevice 102 is detected to be within a store.

The at least one of the query completion suggestion or the search resultmay be displayed in association with the search (512). In displaying thesearch results, the electronic device 102 may categorize the searchresults as described above. In a case where the intranet-based searchsuggestions from the process corresponding to FIG. 4 are also obtained,both the keyword-based suggestions and the intranet-based suggestionsmay be grouped under a similar heading (e.g., “store A” heading). In acase where competitive search results are obtained (e.g., from App Bstore), the set of keywords may be grouped under a separate heading(e.g., “store B” heading).

Moreover, the electronic device 102 may rank keywords based onpredefined rules. For example, a store application may assign weights orotherwise prioritize certain keywords within its provided set ofkeywords. The electronic device 102 may access these weights orpriorities in order to rank keywords for display. Furthermore, theelectronic device 102 may itself prioritize keywords based on codestored in the memory 304. For example, in a case where sets of keywordsare provided by both the Store A App and the Store B App, and theelectronic device 102 is within store A, the electronic device 102 mayprioritize the keywords provided by the Store A App over those providedby the Store B App. Based on the weights and/or priorities for keywords,the keywords are displayed in ranked order. In some cases, keywordsbelow a threshold weight and/or priority may not be presented at all.

In a case where the user selects one of the query completionsuggestion(s) and/or search result(s) corresponding to the keywords, theuser may be directed to a page (e.g., an internet webpage, or a page(and/or user interface) within the respective store application) withmore information for the selected item. Thus, the user may access aspecific page of the store, but the store may not be made aware of thedevice location or query information that directed the user to the page.In one or more implementations, user interaction with respect to an item(e.g., a physical action such as entering the store or scanning acoupon, and/or user interaction with the device such as an onlinepurchase or endorsement of the item) may result in the associated storebeing required to pay a commission for the user interaction, forexample, based on a predefined agreement between the store and a searchservice implementing the subject system.

FIG. 6 illustrates a flow diagram of another example process forperforming a search based on device location in accordance with one ormore implementations. For explanatory purposes, the process 600 isprimarily described herein with reference to the electronic device 102of FIGS. 1-3. However, the process 600 is not limited to the electronicdevice 102, and one or more blocks (or operations) of the process 600may be performed by one or more other components of the electronicdevice 102. Further for explanatory purposes, the blocks of the process600 are described herein as occurring in serial, or linearly. However,multiple blocks of the process 600 may occur in parallel. In addition,the blocks of the process 600 need not be performed in the order shownand/or one or more blocks of the process 600 need not be performedand/or can be replaced by other operations.

In the example of FIG. 6, it may not be not necessary for a storeapplication (e.g. Store App A) to be installed on the electronic device102. Rather, participating retail store chains (e.g., retail store chainA, retail store chain B) may provide respective retail store data to anintermediary server (e.g., the intermediary server 206) that is trustedby the electronic device 102.

In this regard, the intermediary server 206 may implement certainstandards of user privacy. The electronic device 102 may present theuser with these privacy terms and standards, and the user may agree tothem. As such, the user may authorize the transfer of certain databetween the electronic device 102 and the intermediary server 206, butnot authorize that such data to be provided to the remote servers 210a-210 n.

As such, store data corresponding to retail store chains A and B may bepre-stored on the intermediary server 206, and may be periodicallyupdated on the intermediary server 206. This data can include, but isnot limited to, store layout information for individual stores, productavailability, inventory, promotions and/or coupons.

Thus, in FIG. 6, the electronic device 102 may detect that its locationis within a location of the store or within a threshold distance of thelocation of the store (602). As discussed above, the electronic device102 may make this detection based on geo-fencing of individual storesand detecting device location via the positioning circuitry 308.

The electronic device 102 may receive user input for initiating a search(604), for example, a system-wide search. Using the subject system,results for the system-wide search may be expanded to include querycompletion suggestion(s) and/or search result(s) derived from the retailstore information previously stored on the intermediary server 206.These query completion suggestion(s) and/or search result(s) maysupplement other search suggestions as described above. In one or moreimplementations, the intermediary server based query completionsuggestion(s) and/or search result(s) may be obtained in conjunctionwith the search suggestions described above with reference to FIGS. 4-5.

Thus, the electronic device 102 sends an indication of the user input tothe intermediary server 206 (606). The electronic device 102 obtains, inresponse to the sent indication, at least one of a query completionsuggestion or a search result based on the information previouslyprovided to the intermediary server in association with the store (608).

As discussed above with reference to FIG. 4, the obtained querycompletion suggestion(s) and/or search result(s) may adaptively and/ordynamically adjust based on user input. Thus, search suggestions uponopening the system-wide search interface may be different than thedynamically-based search suggestions obtained as the user updateshis/her search input (e.g., by typing, barcode or QR code scanning,object recognition).

As noted above, the data provided by the remote server 210 a may includestore layout information for individual stores, product availability,inventory, promotions and/or coupons. In one or more implementations,the electronic device 102 may use this information to provide searchsuggestions for a product and/or promotion based on the device locationwithin the store relative to the store layout information.

For example, if the electronic device 102 is near the shoe section ofthe store (e.g., based on the device location from the positioningcircuitry 308 compared to the provided store layout), search suggestionsrelated to shoes may be prioritized when the user initiates a search.Alternatively or in addition, if the electronic device 102 were in adifferent part of the store and the user input the term “shoes” withinthe search interface, the store layout information may be used to directthe user to the shoe section. For example, a “direct me to shoes” searchsuggestion may be provided in the list of search results, which canprovide in-store navigation instructions for directing the user to theshoe section.

The at least one of the query completion suggestion or the search resultmay be displayed in association with the search (610). In displaying thesearch results, the electronic device 102 may categorize the searchresults as described above. In a case where the search suggestions fromthe processes corresponding to FIGS. 4-5 are also obtained, searchsuggestions may be grouped under a similar heading (e.g., “store A”heading). In a case where competitive search suggestions are obtained(e.g., from App B store), these search suggestions can be grouped undera separate heading (e.g., “store B” heading) and/or may be merged intothe suggestions corresponding to “store A.”

In a case where the user selects one of the query completionsuggestion(s) and/or search result(s) as provided via the intermediaryserver 206, the user may be directed to a page (e.g., an internetwebpage, or a page (and/or user interface) within the respective storeapplication) with more information for the selected item. Thus, the usermay access a specific page of the store, but the store is not made awareof the device location or query information that directed the user tothe page. In one or more implementations, user interaction with respectto an item (e.g., a physical action such as entering the store orscanning a coupon, and/or user interaction with the device such as anonline purchase or endorsement of the item) may result in the associatedstore being required to pay a commission for the user interaction, forexample, based on a predefined agreement between the store and a searchservice implementing the subject system.

FIG. 7 illustrates a flow diagram of another example process forperforming a search based on device location in accordance with one ormore implementations. For explanatory purposes, the process 700 isprimarily described herein with reference to the electronic device 102of FIGS. 1-3, and the remote server 210 a of FIG. 2. However, theprocess 700 is not limited to the electronic device 102, and one or moreblocks (or operations) of the process 700 may be performed by one ormore other components of the electronic device 102. Further forexplanatory purposes, the blocks of the process 700 are described hereinas occurring in serial, or linearly. However, multiple blocks of theprocess 700 may occur in parallel. In addition, the blocks of theprocess 700 need not be performed in the order shown and/or one or moreblocks of the process 700 need not be performed and/or can be replacedby other operations.

As noted above with reference to FIGS. 4-5, the electronic device 102one or more store applications may be installed on the electronic device102. For example, the electronic device 102 may install Store A Appcorresponding to retail store chain A, and Store B App corresponding toa competing retail store chain B. For example, retail store chain A andretail store chain B may be competitors.

In the example of FIG. 7, the electronic device 102 may implement anauthorization system in which the user can authorize which stores (e.g.,retail store chains) can receive user data such as device locationand/or user input search queries. Based on this user data, the remoteserver corresponding to the store (e.g., the remote server 210 a) mayreceive information from and/or provide information to the electronicdevice 102. The information can be used in providing search suggestions.For example, the information can include, but is not limited to, storelayout information for individual stores, product availability,inventory, promotions and/or coupons.

In one or more implementations, the authorization system can beconfigured via a user settings interface for each of the respectivestore applications and/or via operating system settings of theelectronic device 102. Alternatively or in addition, the user can beprompted, when the user enters the predesignated area of the store, asto whether the user data can be sent to a remote server (e.g., remoteserver 210 a) corresponding to the store (e.g., retail store chain).

Thus, in FIG. 7, the electronic device 102 may detect that its locationis within a location of the store or within a threshold distance of thelocation of the store (702). As discussed above, the electronic device102 may make this detection based on, for example, geo-fencing ofindividual stores and detecting device location via the positioningcircuitry 308.

The electronic device 102 may receive user input for initiating a search(704), for example, a system-wide search. Using the subject system,results for the system-wide search may be expanded to include querycompletion suggestion(s) and/or search result(s) derived from theinformation received from the remote server 210 a. These querycompletion suggestion(s) and/or search result(s) may supplement othersearch suggestions as described above. In one or more implementations,the remote server-based suggestion(s) and/or search result(s) may beobtained in conjunction with the search suggestions described above withreference to FIGS. 4-6.

Thus, the electronic device 102 facilitates sending an indication of theuser input to the remote server 210 a (706). In one or moreimplementations, the electronic device 102 may send an indication of theuser input to the intermediary server 206. The intermediary server mayremove any identifying information of the electronic device 102 (e.g.,device identifier information, user identifier information) from theindication of user input, and then pass the user input (e.g., queryinformation) to the remote server 210 a. In this way, the remote server210 a is not provided with user identification information, thuspreserving user anonymity.

Alternatively or in addition, when the user has authorized the remoteserver 210 a to receive user identifying information, the indication ofuser input may be directly transmitted from the electronic device 102 tothe remote server 210 a. While the remote server 210 a may receive useridentifying information in this case, such receipt was preauthorized bythe user based on an authorization system as noted above.

To enable communication between the electronic device 102 and the remoteserver 210 a, a store application may provide a network identifier(e.g., URL) for the remote server 210 a to the electronic device 102(e.g., upon installation of the store application and/or any timethereafter). The user may access this network identifier in order todirectly communicate with the remote server 210 a.

The electronic device 102 obtains, in response to the sent indication,at least one of a query completion suggestion or a search result basedon the information provided by the remote server 210 a (708). Asdiscussed above, the obtained query completion suggestion(s) and/orsearch result(s) may adaptively and/or dynamically adjust based on userinput. Thus, search suggestions upon opening the system-wide searchinterface may be different than the dynamically-based search suggestionsobtained as the user updates his/her search input (e.g., by typing,barcode or QR code scanning, object recognition).

As noted above, the data provided by the remote server 210 a may includestore layout information for individual stores, product availability,inventory, promotions and/or coupons. The electronic device 102 may usethis information to provide search suggestions for a product and/orpromotion based on the device location within the store, for example,relative to the store layout information.

By virtue of using the authorization system, it is possible for the userto obtain search suggestions without sending user data information toall of the remote servers 210 a-210 n. Instead, since the userpreauthorizes which stores (e.g., retail chain stores) may receive userdata upon entering a geo-fenced store, the number of remote serverswhich are authorized to receive the user data is controlled to theremote servers authorized by the user.

In the example of FIG. 7, it is possible for the intermediary server 206to calculate and maintain global knowledge across multiple users, asnoted above with respect to FIG. 6. Rankings for search suggestions canbe updated accordingly.

The at least one of the query completion suggestion or the search resultmay be displayed in association with the search (710). In displaying thesearch results, the electronic device 102 may categorize the searchresults as described above. In a case where the search suggestions fromthe processes corresponding to FIGS. 4-6 are also obtained, searchsuggestions may be grouped under a similar heading (e.g., “store A”heading). In a case where competitive search suggestions are obtained(e.g., from App B store), these search suggestions may be grouped undera separate heading (e.g., “store B” heading).

In a case where the user selects one of the query completionsuggestion(s) and/or search result(s) as provided by the remote server210 a, the user may be directed to a page (e.g., an internet webpage, ora page (and/or user interface) within the respective store application)with more information for the selected item. Thus, the user may access aspecific page of the store, but device location and/or query informationis directed to remote servers on a limited, and user-preauthorized,basis. In one or more implementations, user interaction with respect toan item (e.g., a physical action such as entering the store or scanninga coupon, and/or user interaction with the device such as an onlinepurchase or endorsement of the item) may result in the associated storebeing required to pay a commission for the user interaction, forexample, based on a predefined agreement between the store and a searchservice implementing the subject system.

While FIGS. 4-8 are illustrated and described as separate processes, thesubject system may provide search suggestions to the user based on oneor more combinations of these processes. For example, the store layoutinformation described with respect to FIGS. 6-7 may be used inconjunction with the keywords described with respect to FIG. 5. Thus,the location of the electronic device 102 relative to the store layoutmay be used in weighting and/or prioritizing certain keywords. Forexample, if the electronic device 102 is within a threshold distance ofan item based on the store layout and device location, correspondingkeywords can be surfaced. In one or more implementations, in addition tostore layout information and/or device location, proximity to certainitems within a store can be determined by other manners (e.g., Bluetoothbeacons tagged to certain items, NFC tags on items, time/angle ofarrival determinations, etc.), and search suggestions may ranked andsurfaced accordingly.

In another example, the search suggestions for competitors (e.g., asprovided by the processes of FIGS. 5-8) may be used to supplement theintranet-based suggestions described with respect to FIG. 4, so thatinformation from competing stores may still be presented to the userwhile connected to a local store's intranet. Of course, othercombinations of the processes described in FIGS. 4-8 may be used to inproviding search suggestions.

FIG. 8 illustrates an electronic system 800 with which one or moreimplementations of the subject technology may be implemented. Theelectronic system 800 can be, and/or can be a part of, one or more ofthe electronic device 102, the intermediary server 206, the remoteservers 210 a-210 n, and the local server 208 shown in FIG. 2. Theelectronic system 800 may include various types of computer readablemedia and interfaces for various other types of computer readable media.The electronic system 800 includes a bus 808, one or more processingunit(s) 812, a system memory 804 (and/or buffer), a ROM 810, a permanentstorage device 802, an input device interface 814, an output deviceinterface 806, and one or more network interfaces 816, or subsets andvariations thereof.

The bus 808 collectively represents all system, peripheral, and chipsetbuses that communicatively connect the numerous internal devices of theelectronic system 800. In one or more implementations, the bus 808communicatively connects the one or more processing unit(s) 812 with theROM 810, the system memory 804, and the permanent storage device 802.From these various memory units, the one or more processing unit(s) 812retrieves instructions to execute and data to process in order toexecute the processes of the subject disclosure. The one or moreprocessing unit(s) 812 can be a single processor or a multi-coreprocessor in different implementations.

The ROM 810 stores static data and instructions that are needed by theone or more processing unit(s) 812 and other modules of the electronicsystem 800. The permanent storage device 802, on the other hand, may bea read-and-write memory device. The permanent storage device 802 may bea non-volatile memory unit that stores instructions and data even whenthe electronic system 800 is off. In one or more implementations, amass-storage device (such as a magnetic or optical disk and itscorresponding disk drive) may be used as the permanent storage device802.

In one or more implementations, a removable storage device (such as afloppy disk, flash drive, and its corresponding disk drive) may be usedas the permanent storage device 802. Like the permanent storage device802, the system memory 804 may be a read-and-write memory device.However, unlike the permanent storage device 802, the system memory 804may be a volatile read-and-write memory, such as random access memory.The system memory 804 may store any of the instructions and data thatone or more processing unit(s) 812 may need at runtime. In one or moreimplementations, the processes of the subject disclosure are stored inthe system memory 804, the permanent storage device 802, and/or the ROM810. From these various memory units, the one or more processing unit(s)812 retrieves instructions to execute and data to process in order toexecute the processes of one or more implementations.

The bus 808 also connects to the input and output device interfaces 814and 806. The input device interface 814 enables a user to communicateinformation and select commands to the electronic system 800. Inputdevices that may be used with the input device interface 814 mayinclude, for example, alphanumeric keyboards and pointing devices (alsocalled “cursor control devices”). The output device interface 806 mayenable, for example, the display of images generated by electronicsystem 800. Output devices that may be used with the output deviceinterface 806 may include, for example, printers and display devices,such as a liquid crystal display (LCD), a light emitting diode (LED)display, an organic light emitting diode (OLED) display, a flexibledisplay, a flat panel display, a solid state display, a projector, orany other device for outputting information. One or more implementationsmay include devices that function as both input and output devices, suchas a touchscreen. In these implementations, feedback provided to theuser can be any form of sensory feedback, such as visual feedback,auditory feedback, or tactile feedback; and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

Finally, as shown in FIG. 8, the bus 808 also couples the electronicsystem 800 to one or more networks and/or to one or more network nodes,such as the electronic device 102 shown in FIG. 1, through the one ormore network interface(s) 816. In this manner, the electronic system 800can be a part of a network of computers (such as a LAN, a wide areanetwork (“WAN”), or an Intranet, or a network of networks, such as theInternet. Any or all components of the electronic system 800 can be usedin conjunction with the subject disclosure.

Implementations within the scope of the present disclosure can bepartially or entirely realized using a tangible computer-readablestorage medium (or multiple tangible computer-readable storage media ofone or more types) encoding one or more instructions. The tangiblecomputer-readable storage medium also can be non-transitory in nature.

The computer-readable storage medium can be any storage medium that canbe read, written, or otherwise accessed by a general purpose or specialpurpose computing device, including any processing electronics and/orprocessing circuitry capable of executing instructions. For example,without limitation, the computer-readable medium can include anyvolatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM,and TTRAM. The computer-readable medium also can include anynon-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM,NVRAM, flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM,NRAM, racetrack memory, FJG, and Millipede memory.

Further, the computer-readable storage medium can include anynon-semiconductor memory, such as optical disk storage, magnetic diskstorage, magnetic tape, other magnetic storage devices, or any othermedium capable of storing one or more instructions. In one or moreimplementations, the tangible computer-readable storage medium can bedirectly coupled to a computing device, while in other implementations,the tangible computer-readable storage medium can be indirectly coupledto a computing device, e.g., via one or more wired connections, one ormore wireless connections, or any combination thereof.

Instructions can be directly executable or can be used to developexecutable instructions. For example, instructions can be realized asexecutable or non-executable machine code or as instructions in ahigh-level language that can be compiled to produce executable ornon-executable machine code. Further, instructions also can be realizedas or can include data. Computer-executable instructions also can beorganized in any format, including routines, subroutines, programs, datastructures, objects, modules, applications, applets, functions, etc. Asrecognized by those of skill in the art, details including, but notlimited to, the number, structure, sequence, and organization ofinstructions can vary significantly without varying the underlyinglogic, function, processing, and output.

While the above discussion primarily refers to microprocessor ormulti-core processors that execute software, one or more implementationsare performed by one or more integrated circuits, such as ASICs orFPGAs. In one or more implementations, such integrated circuits executeinstructions that are stored on the circuit itself.

Those of skill in the art would appreciate that the various illustrativeblocks, modules, elements, components, methods, and algorithms describedherein may be implemented as electronic hardware, computer software, orcombinations of both. To illustrate this interchangeability of hardwareand software, various illustrative blocks, modules, elements,components, methods, and algorithms have been described above generallyin terms of their functionality. Whether such functionality isimplemented as hardware or software depends upon the particularapplication and design constraints imposed on the overall system.Skilled artisans may implement the described functionality in varyingways for each particular application. Various components and blocks maybe arranged differently (e.g., arranged in a different order, orpartitioned in a different way) all without departing from the scope ofthe subject technology.

It is understood that any specific order or hierarchy of blocks in theprocesses disclosed is an illustration of example approaches. Based upondesign preferences, it is understood that the specific order orhierarchy of blocks in the processes may be rearranged, or that allillustrated blocks be performed. Any of the blocks may be performedsimultaneously. In one or more implementations, multitasking andparallel processing may be advantageous. Moreover, the separation ofvarious system components in the implementations described above shouldnot be understood as requiring such separation in all implementations,and it should be understood that the described program components andsystems can generally be integrated together in a single softwareproduct or packaged into multiple software products.

As used in this specification and any claims of this application, theterms “base station”, “receiver”, “computer”, “server”, “processor”, and“memory” all refer to electronic or other technological devices. Theseterms exclude people or groups of people. For the purposes of thespecification, the terms “display” or “displaying” means displaying onan electronic device.

As used herein, the phrase “at least one of” preceding a series ofitems, with the term “and” or “or” to separate any of the items,modifies the list as a whole, rather than each member of the list (i.e.,each item). The phrase “at least one of” does not require selection ofat least one of each item listed; rather, the phrase allows a meaningthat includes at least one of any one of the items, and/or at least oneof any combination of the items, and/or at least one of each of theitems. By way of example, the phrases “at least one of A, B, and C” or“at least one of A, B, or C” each refer to only A, only B, or only C;any combination of A, B, and C; and/or at least one of each of A, B, andC.

The predicate words “configured to”, “operable to”, and “programmed to”do not imply any particular tangible or intangible modification of asubject, but, rather, are intended to be used interchangeably. In one ormore implementations, a processor configured to monitor and control anoperation or a component may also mean the processor being programmed tomonitor and control the operation or the processor being operable tomonitor and control the operation. Likewise, a processor configured toexecute code can be construed as a processor programmed to execute codeor operable to execute code.

Phrases such as an aspect, the aspect, another aspect, some aspects, oneor more aspects, an implementation, the implementation, anotherimplementation, some implementations, one or more implementations, anembodiment, the embodiment, another embodiment, some implementations,one or more implementations, a configuration, the configuration, anotherconfiguration, some configurations, one or more configurations, thesubject technology, the disclosure, the present disclosure, othervariations thereof and alike are for convenience and do not imply that adisclosure relating to such phrase(s) is essential to the subjecttechnology or that such disclosure applies to all configurations of thesubject technology. A disclosure relating to such phrase(s) may apply toall configurations, or one or more configurations. A disclosure relatingto such phrase(s) may provide one or more examples. A phrase such as anaspect or some aspects may refer to one or more aspects and vice versa,and this applies similarly to other foregoing phrases.

The word “exemplary” is used herein to mean “serving as an example,instance, or illustration”. Any embodiment described herein as“exemplary” or as an “example” is not necessarily to be construed aspreferred or advantageous over other implementations. Furthermore, tothe extent that the term “include”, “have”, or the like is used in thedescription or the claims, such term is intended to be inclusive in amanner similar to the term “comprise” as “comprise” is interpreted whenemployed as a transitional word in a claim.

All structural and functional equivalents to the elements of the variousaspects described throughout this disclosure that are known or latercome to be known to those of ordinary skill in the art are expresslyincorporated herein by reference and are intended to be encompassed bythe claims. Moreover, nothing disclosed herein is intended to bededicated to the public regardless of whether such disclosure isexplicitly recited in the claims. No claim element is to be construedunder the provisions of 35 U.S.C. § 112, sixth paragraph, unless theelement is expressly recited using the phrase “means for” or, in thecase of a method claim, the element is recited using the phrase “stepfor”.

The previous description is provided to enable any person skilled in theart to practice the various aspects described herein. Variousmodifications to these aspects will be readily apparent to those skilledin the art, and the generic principles defined herein may be applied toother aspects. Thus, the claims are not intended to be limited to theaspects shown herein, but are to be accorded the full scope consistentwith the language claims, wherein reference to an element in thesingular is not intended to mean “one and only one” unless specificallyso stated, but rather “one or more”. Unless specifically statedotherwise, the term “some” refers to one or more. Pronouns in themasculine (e.g., his) include the feminine and neuter gender (e.g., herand its) and vice versa. Headings and subheadings, if any, are used forconvenience only and do not limit the subject disclosure.

What is claimed is:
 1. A computer program product comprising code storedin a tangible computer-readable storage medium, the code comprising:code to detect that a location of a device is within a location of astore or within a threshold distance of the location of the store; codeto receive user input for initiating a search; code to obtain, inresponse to the received user input, at least one of a query completionsuggestion or a search result, the at least one of the query completionsuggestion or the search result having been targeted to the location ofthe store or the threshold distance of the location of the store,wherein the at least one of the query completion suggestion or thesearch result is obtained from an intermediary server, based oninformation previously provided by a remote server to the intermediaryserver in association with the store; and code to display the at leastone of the query completion suggestion or the search result inassociation with the search.
 2. The computer program product of claim 1,wherein the information previously provided to the intermediary servercomprises store layout information.
 3. The computer program product ofclaim 1, wherein the search corresponds to a system-wide search foritems stored locally on the device, and wherein the code to displayfurther comprises code to display at least one additional querycompletion suggestion or the search result corresponding to the itemslocally on the device.
 4. The computer program product of claim 1,wherein detecting that the location of the device is within the locationof the store or within the threshold distance of the location of thestore is based on a geo-fenced location of the store.
 5. The computerprogram product of claim 1, wherein the code further comprises code toreceive user authorization to transfer device data between the deviceand the intermediary server, but not authorize the device data to beprovided to the remote server.
 6. The computer program product of claim1, wherein the device does not have an application associated with thestore installed on the device.
 7. The computer program product of claim1, wherein the information previously provided by the remote server hasbeen pre-stored at the intermediary server prior to receipt of the userinput for initiating the search.
 8. A device, comprising: at least oneprocessor configured; and a memory including instructions that, whenexecuted by the at least one processor, cause the at least one processorto: detect that a location of the device is within a location of a storeor within a threshold distance of the location of the store; receiveuser input for initiating a search; obtain, in response to the receiveduser input, at least one of a query completion suggestion or a searchresult, the at least one of the query completion suggestion or thesearch result having been targeted to the location of the store or thethreshold distance of the location of the store, wherein the at leastone of the query completion suggestion or the search result is obtainedfrom an intermediary server, based on information previously provided bya remote server to the intermediary server in association with thestore; and display the at least one of the query completion suggestionor the search result in association with the search.
 9. The device ofclaim 8, wherein the information previously provided to the intermediaryserver comprises store layout information.
 10. The device of claim 8,wherein the search corresponds to a system-wide search for items storedlocally on the device, and wherein the at least one processor isconfigured to display at least one of the query completion suggestion orthe search result in association with the search by displaying at leastone additional query completion suggestion or the search resultcorresponding to the items locally on the device.
 11. The device ofclaim 8, wherein the at least one processor is configured to detect thatthe location of the device is within the location of the store or withinthe threshold distance of the location of the store based on ageo-fenced location of the store.
 12. The device of claim 8, wherein theat least one processor is further configured to obtain userauthorization to transfer device data between the device and theintermediary server, but not authorize the device data to be provided tothe remote server.
 13. The device of claim 8, wherein the device doesnot have an application associated with the store installed on thedevice.
 14. The device of claim 8, wherein the information previouslyprovided by the remote server has been pre-stored at the intermediaryserver prior to receipt of the user input for initiating the search. 15.A method, comprising: detecting that a location of a device is within alocation of a store or within a threshold distance of the location ofthe store; receiving user input for initiating a search; obtaining, inresponse to the received user input, at least one of a query completionsuggestion or a search result, the at least one of the query completionsuggestion or the search result having been targeted to the location ofthe store or the threshold distance of the location of the store,wherein the at least one of the query completion suggestion or thesearch result is obtained from an intermediary server, based oninformation previously provided by a remote server to the intermediaryserver in association with the store; and displaying the at least one ofthe query completion suggestion or the search result in association withthe search.
 16. The method of claim 15, wherein the informationpreviously provided to the intermediary server comprises store layoutinformation.
 17. The method of claim 15, wherein the search correspondsto a system-wide search for items stored locally on the device, andwherein the displaying of the at least one of the query completionsuggestion or the search result in association with the search comprisesdisplaying at least one additional query completion suggestion or thesearch result corresponding to the items locally on the device.
 18. Themethod of claim 15, further comprising receiving user authorization totransfer device data between the device and the intermediary server, butnot authorize the device data to be provided to the remote server. 19.The method of claim 15, wherein the device does not have an applicationassociated with the store installed on the device.
 20. The method ofclaim 15, wherein the information previously provided by the remoteserver has been pre-stored at the intermediary server prior to receiptof the user input for initiating the search.